package protect.week10;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/10/26 22:30
 * @package protect.week10
 * @description 1844. 将所有数字用字符替换
 * 给你一个下标从 0 开始的字符串 s ，它的 偶数 下标处为小写英文字母，奇数 下标处为数字。
 * <p>
 * 定义一个函数 shift(c, x) ，其中 c 是一个字符且 x 是一个数字，函数返回字母表中 c 后面第 x 个字符。
 * <p>
 * 比方说，shift('a', 5) = 'f' 和 shift('x', 0) = 'x' 。
 * 对于每个 奇数 下标 i ，你需要将数字 s[i] 用 shift(s[i-1], s[i]) 替换。
 * <p>
 * 请你替换所有数字以后，将字符串 s 返回。题目 保证 shift(s[i-1], s[i]) 不会超过 'z' 。
 * <p>
 *  
 * <p>
 * 示例 1：
 * <p>
 * 输入：s = "a1c1e1"
 * 输出："abcdef"
 * 解释：数字被替换结果如下：
 * - s[1] -> shift('a',1) = 'b'
 * - s[3] -> shift('c',1) = 'd'
 * - s[5] -> shift('e',1) = 'f'
 * 示例 2：
 * <p>
 * 输入：s = "a1b2c3d4e"
 * 输出："abbdcfdhe"
 * 解释：数字被替换结果如下：
 * - s[1] -> shift('a',1) = 'b'
 * - s[3] -> shift('b',2) = 'd'
 * - s[5] -> shift('c',3) = 'f'
 * - s[7] -> shift('d',4) = 'h'
 *  
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode.cn/problems/replace-all-digits-with-characters
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

public class Ch02_ReplaceDigits {
    public static String replaceDigits(String s) {
        String end;
        if (s.length()%2==1){
             end = s.substring(s.length()-1);
            s = s.substring(0,s.length()-1);
        }else {
             end  = "";
        }
        System.out.println(end);


        StringBuilder tmp = new StringBuilder();
        for (int i = 0; i < s.length(); i += 2) {
            char shift = shift(s.charAt(i), Integer.parseInt(s.charAt(i + 1) + ""));
            tmp.append(s.charAt(i));
            tmp.append(shift);
        }

        return tmp.toString() + end;

    }

    static char shift(char c, int x) {
        return (char) (c + x);
    }

    public static void main(String[] args) {
        String a1c1e1 = replaceDigits("a1b2c3d4e");
        System.out.println(a1c1e1);
    }
}
